home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / turbcomm.arc / GETVIDLN.INC < prev    next >
Text File  |  1989-06-30  |  2KB  |  52 lines

  1.    Var
  2.       VideoScreenWidth : Integer; { Is screen set to 80 or 132 column }
  3.  
  4.    Function GetVidLine( LineNumber : Integer) : StringLong;
  5.       { File: GETVIDLN.INC }
  6.       { Given the screen line number, return the line from video memory }
  7.  
  8.       Const
  9.          LATOFSBase = $0EF4;
  10.          VidMemSeg  = $EE00;
  11.          null       = 0;
  12.  
  13.       Var
  14.          TempString : StringLong;
  15.          LATOFSOffset, CharOffset : Integer;
  16.          LineLen, ColCounter, LastCharPos : Integer;
  17.  
  18.       Begin
  19.          TempString := '';
  20.  
  21.          { First get the line offset from the LATOFS table }
  22.          LATOFSOffset := LATOFSBase + (2 * (LineNumber - 1));
  23.          CharOffset := MemW[VidMemSeg:LATOFSOffset];
  24.  
  25.          VideoScreenWidth := Mem[VidMemSeg:$0f26];
  26.  
  27.          If (CharOffSet Xor $8000) > 0
  28.             Then Begin
  29.                { It's a double width line }
  30.                CharOffset := CharOffset And $7FFF;
  31.                LineLen := VideoScreenWidth div 2;
  32.                End
  33.             Else LineLen := VideoScreenWidth;
  34.  
  35.          For ColCounter := 1 to LineLen Do
  36.             Begin
  37.                If Mem[VidMemSeg:CharOffset] = null
  38.                   Then TempString[ColCounter] := ' '
  39.                   Else Begin
  40.                      TempString[ColCounter] := Chr(Mem[VidMemSeg:CharOffset]);
  41.                      If TempString[ColCounter] > ' '
  42.                         Then LastCharPos := ColCounter;
  43.                      End; { If there was a character }
  44.                CharOffset := CharOffset + 1;
  45.                End;
  46.  
  47.          TempString[0] := Chr(LastCharPos);
  48.  
  49.          { Return with the final value }
  50.          GetVidLine := TempString;
  51.          End; { Function GetVidLine }
  52.